package br.com.sgpv2.controler.contribuicaoPrevidenciaria;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import br.com.sgpv2.entity.contribuicaoprevidenciaria.ContribuicaoPrevidenciaria;
import br.com.sgpv2.service.contribuicaoprevidenciaria.ContribuicaoPrevidenciariaService;



@Controller
//@RequestMapping("/contribuicaoPrevidenciaria")
public class ContribuicaoPrevidenciariaController {

	@Autowired
	private ContribuicaoPrevidenciariaService contribuicaoPrevidenciariaService; 
	
	
	@RequestMapping(value = "contribuicaoPrevidenciaria/pesquisar", method = RequestMethod.GET)
	public String pesquisar(Model model, HttpServletRequest request) throws Exception {
		String ano = request.getParameter("anoPesquisa");
		String mes = request.getParameter("mesPesquisa");
		
		List<ContribuicaoPrevidenciaria> contribuicoes = contribuicaoPrevidenciariaService.consultarPorMesAno(mes, ano);
		model.addAttribute("contribuicoes", contribuicoes);
		
		model.addAttribute("meses", ContribuicaoPrevidenciariaController.criarListaMeses());
		model.addAttribute("anos", ContribuicaoPrevidenciariaController.criarListaAnos());
		
		return "contribuicaoPrevidenciaria/contribuicoes";
	}
	
	@RequestMapping(value = "contribuicaoPrevidenciaria/incluir", method = RequestMethod.GET)
	public String getInclusaoPage(Model model) throws Exception {
		
		model.addAttribute("contribuicaoBean", new ContribuicaoPrevidenciaria());
		model.addAttribute("anos", criarListaAnos());
		model.addAttribute("meses", criarListaMeses());
		model.addAttribute("titleBotaoAcao", "Salvar");
		
		return "contribuicaoPrevidenciaria/contribuicaoPrevidenciaria-incluir";
	}
	
	@RequestMapping(value = "contribuicaoPrevidenciaria/incluirContribuicao", method = RequestMethod.POST)
	public String salvar(ContribuicaoPrevidenciaria contribuicaoPrevidenciaria, Model model) throws Exception {
		
		contribuicaoPrevidenciariaService.salvar(contribuicaoPrevidenciaria);
		return "redirect:pesquisar";
	}
	
	@RequestMapping(value = "contribuicaoPrevidenciaria/excluir/{pk}", method = RequestMethod.GET)
	public String excluir(@PathVariable Integer pk, Model model) throws Exception {
		ContribuicaoPrevidenciaria contribuicaoPrevidenciaria = contribuicaoPrevidenciariaService.buscar(pk);
		
		if(contribuicaoPrevidenciaria !=null){
			contribuicaoPrevidenciariaService.remover(contribuicaoPrevidenciaria);
		}
		
		return "redirect:../pesquisar";
	}
	
	@RequestMapping(value = "/contribuicaoPrevidenciaria/atualizar/{pk}", method = RequestMethod.GET)
	public String getAlteracaoPage(@PathVariable Integer pk,Model model) throws Exception {
		ContribuicaoPrevidenciaria contribuicaoPrevidenciariaBanco = contribuicaoPrevidenciariaService.buscar(pk);
		
		model.addAttribute("contribuicaoBean", contribuicaoPrevidenciariaBanco);
		model.addAttribute("anos", criarListaAnos());
		model.addAttribute("meses", criarListaMeses());
		model.addAttribute("titleBotaoAcao", "Alterar");
		
		return "contribuicaoPrevidenciaria/contribuicaoPrevidenciaria-alterar";
	}
	
	@RequestMapping(value = "contribuicaoPrevidenciaria/alterarContribuicao", method = RequestMethod.POST)
	public String alterar(ContribuicaoPrevidenciaria contribuicaoPrevidenciaria) throws Exception {

		contribuicaoPrevidenciariaService.alterar(contribuicaoPrevidenciaria);		
		
		return "redirect:pesquisar";
	}
	
	public static List<String> criarListaMeses() {
		List<String> listaMeses = new ArrayList<String>();
		listaMeses.add("Janeiro");
		listaMeses.add("Fevereiro");
		listaMeses.add("Março");
		listaMeses.add("Abril");
		listaMeses.add("Maio");
		listaMeses.add("Junho");
		listaMeses.add("Julho");
		listaMeses.add("Agosto");
		listaMeses.add("Setembro");
		listaMeses.add("Outubro");
		listaMeses.add("Novembro");
		listaMeses.add("Dezembro");
		
		return listaMeses;
	}
	
	public static List<String> criarListaAnos() {
		ArrayList<String> listaAnos = new ArrayList<String>();
		for (Integer i = 2000; i < 2016; i++) {
			listaAnos.add(i.toString());
		}
		
		return listaAnos;
	}
}
